/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siseventos.managed;

import br.siseventos.model.TbPrestadorServico;
import br.siseventos.service.PrestadorServicoService;
import br.siseventos.view.util.CallbackHelper;
import br.siseventos.view.util.MessageHelper;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

/**
 *
 * @author LeandroSilvaMoura
 */
@ManagedBean(name = "prestadorServicoBean")
@ViewScoped
public class PrestadorServicoBean extends BaseBean{
    // Campos

    private String nome;
    private String telefone;
    private String cnpj;
    private String eml;
    private TbPrestadorServico prestadorServicoSelecionado;
    private List<TbPrestadorServico> listaPrestadorServico;
    // Serviços
    private PrestadorServicoService prestadorServicoService;

    // Construtor
    public PrestadorServicoBean() {
        // Inicializando as daos
        prestadorServicoService = new PrestadorServicoService();

        // Populando o DataTable de Prestadores de Serviço
        popularDataTable();

    }

    // Getters e Setters
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getEml() {
        return eml;
    }

    public void setEml(String eml) {
        this.eml = eml;
    }

    public TbPrestadorServico getPrestadorServicoSelecionado() {
        return prestadorServicoSelecionado;
    }

    public void setPrestadorServicoSelecionado(TbPrestadorServico prestadorServicoSelecionado) {
        this.prestadorServicoSelecionado = prestadorServicoSelecionado;
    }

    public List<TbPrestadorServico> getListaPrestadorServico() {
        return listaPrestadorServico;
    }

    public void setListaPrestadorServico(List<TbPrestadorServico> listaPrestadorServico) {
        this.setListaPrestadorServico(listaPrestadorServico);
    }

    // Actions e listeners
    public void cadastrarPrestadorServico(ActionEvent ex) {
        try {
            // Criando o objeto Prestador de Serviço a ser cadastrado no banco
            TbPrestadorServico p = new TbPrestadorServico();
            p.setNmePrestadorServico(getNome());
            p.setTelPrestadorServico(getTelefone());
            p.setCodCnpjPrestadorServico(getCnpj());
            p.setEmlPrestadorServico(getEml());

            // Cadastrando no banco
            prestadorServicoService.incluir(p);

            // Repopular o datatable
            popularDataTable();

            // Mostrando msg de sucesso!
            MessageHelper.showGlobalMessage("Prestador de serviço cadastrado com sucesso!", FacesMessage.SEVERITY_INFO);

            // Adicionando o parâmetro de Callback
            CallbackHelper.addCallback("salvo", true);


        } catch (Exception e) {
            MessageHelper.showGlobalMessage("Erro ao cadastrar prestador de serviço!", FacesMessage.SEVERITY_ERROR);
        }
    }

    public void excluirPrestadorServico(ActionEvent e) {
        FacesContext contexto = FacesContext.getCurrentInstance();

        try {
            // Excluindo o prestador de serviço selecionado
            prestadorServicoService.excluir(prestadorServicoSelecionado.getIdtPrestadorServico());

            // Repopular o datatable
            popularDataTable();

            // Mostrando mensagem de sucesso
            MessageHelper.showGlobalMessage("Prestador de serviço excluído com sucesso!", FacesMessage.SEVERITY_INFO);

        } catch (Exception ex) {
            // Mostrando mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao excluir prestador de serviço!", FacesMessage.SEVERITY_ERROR);
        }
    }

    public void alterarPrestadorServico(ActionEvent e) {
        try {
            // Alterando o público
            prestadorServicoService.alterar(prestadorServicoSelecionado);

            // Repopular o datatable
            popularDataTable();

            // Mostrando mensagem de sucesso
            MessageHelper.showGlobalMessage("Prestador de serviço alterado com sucesso!", FacesMessage.SEVERITY_INFO);

            // Adicionando o parâmetro de Callback
            CallbackHelper.addCallback("editado", true);

        } catch (Exception ex) {
            // Mostrando mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao alterar prestador de serviço!", FacesMessage.SEVERITY_ERROR);
        }
    }

    private void popularDataTable() {
        try {
            // Carregando o datatable de publicos
            listaPrestadorServico = prestadorServicoService.consultarTodos();
        } catch (Exception ex) {
            MessageHelper.showGlobalMessage("Ocorreu um erro: " + ex.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
    }
    // Util
}
